// mesh setposition
mesh.position.set(x,y,z)

mesh.translatex(10)
mesh.translatey(10)
mesh.translatez(10)

// 设置一个向量并且归一化
const axis = new THREE.Vector3(1,1,0).normalize()
mesh.translateOnAxis(axis,10)

// 旋转
//     弧度= 角度 * Math.PI / 180 
//     角度 = 弧度 * 180 / Math.PI
    mesh.rotateX(Math.PI / 2)
    mesh.rotateY(Math.PI / 2)
    mesh.rotateZ(Math.PI / 2)

    // 设置一个单位向量
        const axis = new THREE.Vector3(0,1,1)
        mesh.rotateOnAxis(axis, Math.PI / 4)

    // rotateOnWorldAxis
        // 设置一个单位向量  绕着世界空间中的单位向量以弧度旋转
        const axis = new THREE.Vector3(0,1,1)
        mesh.rotateOnWorldAxis(axis, Math.PI / 4)

// 缩放
    mesh.scale(10,10,10)
// 显示隐藏
    mesh.visible = false

    layers 
        // 创建一个图层  camera的默认图层为1，一共有1-32个图层 只有当物体的图层和相机的图层一致时，物体会被显示。
            const layers = new THREE.Layers()
            // 设置物体使用的图层
            mesh.layers = layers
            // 设置图层对象的指定图层
            layers.set(1)
            // 一秒后在设置图层对象的指定图层
            setTimeout(() => {layers.set(0)},1000)

// 层级关系
    add mesh.add(object : Object3D, ...)
    children mesh.children
    parent mesh.parent
    attach  mesh.attach(object : Object3D)  // 将object作为子级来添加到该对象中，同时保持该object的世界变换。
    
    // add attach区别
    //     使用add添加物体到父级时，物体会基于父级的本地坐标系进行变换
    //     使用attach添加物体到父级时，物体会保持该object的世界变换。
   remove mesh.reomve(object : Object3D, ...)
   traverse   mesh.traverse((child)=>{})  // 递归子级
   traverseVisible   mesh.traverseVisible((child)=>{})  // 回调函数仅对可见的对象执行
   traverseAncestors mesh.traverseAncestors((child)=>{})  // 在所有的祖先中执行回调函数。

   mesh.clone(recursive : Boolean) 
//    recursive —— 如果值为true，则该物体的后代也会被复制。默认值为true。
//     返回对象前物体的克隆（以及可选的所有后代）。
